#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#include<assert.h>

typedef int DateType;
typedef struct DoubleListNode
{
    struct DoubleListNode* next;
    struct DoubleListNode* prev;
    DateType val;
}ListNode;

ListNode* ListCreate();//创建哨兵位节点
ListNode* newNode(DateType x);
void Print(ListNode* phead);
void ListPushBack(ListNode* pHead, DateType x);
void ListPopBack(ListNode* pHead);
void ListPushFront(ListNode* pHead, DateType x);
void ListPopFront(ListNode* pHead);
ListNode* ListFind(ListNode* pHead, DateType x);
void ListAfterInsert(ListNode* pos, DateType x);
void ListErase(ListNode* pos);
//在函数内部销毁哨兵位，需要传值，如果传值，虽然空间销毁了，但是pHead是野指针
void ListDestory(ListNode** pHead);

